#!/usr/bin/env python
# -*- conding:utf-8 -*-
import json
# 1. json 是一种格式
# 2. json 语法规则：
# 1. 数据由键值对组成
# 2. 键值对由逗号分隔
# 3. 大括号{} 里保存对象
# 4. 中括号[] 里保存数组
# 注意：
# 1. 字符串必须用双引号来包括
# 2. 值可以是： 字符串、数字、true、false、null、列表
# 3. json模块API:
#     json.dumps(obj)   将python数据转化为json
#     json.loads(s)     将json数据转换为python数据
#     json.dump(obj, fp)  转换为json并保存到文件中
#     json.load(fp)     从文件中读取json， 并转化为python 数据

# 常用方法：  dumps/loads/  dump/load (后面两个用于文件)
dic = {'name': 'long', 'age': 20, 'isMan': True, 'a': (1, 2, 3), 'b': [
    1, 2, 'hello']}

# dumps  / loads
# 1. 用json.dumps方法把dic转换为json数据格式
json_data = json.dumps(dic)
# json_data = json.dumps(dic, ensure_ascii=False) # dic中有中文时, 设置ensure_ascii=False
print(json_data)

# 2. json --- > python字典数据格式
dic2 = json.loads(json_data)
print(dic2)


# dump  load
# 1. json.dump
with open('json.json', 'w') as f:
    json.dump(obj=dic, fp=f)  # 把dic转换为json格式然后写入到json.json文件中
# 2. json.load
with open('json.json', 'r') as f:
    res = json.load(fp=f)   # 先读取文件，然后把json数据转换为python 字典数据类型

# 序列化
#     服务器端 需要根据前端的请求 从数据库获取数据 组织成前台可以识别的格式发给前台
# 反序列化
#     客户端 接收服务器返回的数据 并展示到屏幕上
# json数据本质就是字符串,
# 主要函数：
#     序列化：dump、dumps
#     反序列化：load、loads